perm filename LIB.RLS[206,JMC] blob
sn#005339 filedate 1971-01-05 generic text, type T, neo UTF8
00100 COMMENT INST(E,M,P) IS AN A-LIST THAT WILL YIELD E WHEN
00200 SUBSTITUTED IN M. P IS AN A- LIST OF PREVIOUSLY COMMITED SUBSTITUTIONS,
00300 ORDINARILY NIL. INST REQUIRES A PREDICATE ISVAR(M) TO IDENTIFY
00400 VARIABLES.;
00500 INST(E,M,P) ← IF P EQ 'NO THEN 'NO
00600 ELSE IF ATOM M THEN (
00700 IF ISVAR M THEN (LAMBDA W;
00800 IF NULL W THEN (M.E).P
00900 ELSE IF CDR W EQ E THEN P
01000 ELSE 'NO)ASSOC(M,P)
01100 ELSE IF M EQ E THEN P
01200 ELSE 'NO )
01300 ELSE IF ATOM E THEN 'NO
01400 ELSE INST(CDR E,CDR M,INST(CAR E,CAR M,P));
01500
01600 COMMENT THIS SUBLIS CREATES NO UNNECESSARY LIST STRUCTURE.;
01700 SUBLIS(P,E) ← IF ATOM E THEN
01800 (LAMBDA W; IF NULL W THEN E ELSE CDR W)
01900 ASSOC(E,P)
02000 ELSE (LAMBDA X,Y; IF X EQ CAR E AND Y EQ CDR E
02100 THEN E
02200 ELSE X.Y)
02300 (SUBLIS(CAR P,E),SUBLIS(CDR P,E));